<?php
/**
 * Desc: 异常输出处理
 * Auth: Shaoming Lu<lushao1012@163.com>
 * Date: 2018/4/11
 * Time: 14:13
 */
namespace echophp\core\exception;
class Error
{
    public static function showErr($e)
    {
        $err_file = $e->getFile();
        $err_line = $e->getLine();
        $msg1 =  '<b>System Error:</b> ['.$e->getCode().'] '.$e->getMessage().'<br>Error occur in file <b>'.$err_file.'</b> in line <b>'.$err_line.'</b><br>';

        $msg = '';

        // 错误输出代码的前5行至后五行，并在出错行着重标出
        $arr = file($err_file);
        if ($err_line < 5) {//出错行在前5行
            $begin_line = 0;
        } else {
            $begin_line = $err_line - 6;
        }

        for ($i = $begin_line; $i< $err_line-1; $i++) {
            $msg .= ($i+1).$arr[$i] . '<br>';
        }

        if ($err_line > count($arr) - 6) {
            $end_line = count($arr);
        } else {
            $end_line = $err_line + 5;
        }
//
        for ($i = $err_line-1; $i< $end_line; $i++) {
            if($i == $err_line-1) {
                $msg .= '<span style="background-color: burlywood;">'.($i+1).$arr[$i] . '<br></span>';
            } else {
                $msg .= ($i+1).$arr[$i] . '<br>';
            }
        }

        $log_dir = APP_PATH.'runtime';

        if(!is_dir($log_dir)){
            mkdir($log_dir);
        }
        // 保存错误日志
        $save_msg =  date('Y-m-d H:i:s').': System Error: '.$e->getMessage().'. Error occur in file '.$e->getFile().' in line '.$e->getLine().PHP_EOL;
        file_put_contents($log_dir.'/log.txt', $save_msg ,FILE_APPEND);
        if(APP_DEBUG === true) { //开启调试模式时才输出错误信息
            echo $msg1.'<pre>'.$msg.'</pre>';
        } else {
            echo '系统发生错误，请稍后再试！';
            exit;
        }
//        exit;
    }
    public static function error_handler($code, $msg, $file, $line){
        echo 'aaaaa';
    }

}